# time:2023/3/23 19:32
# developer: 20222108 Dollar
import math
key=1
print("计算器使用说明：")
print("本计算器有以下功能：加，减，乘，除，整除（结果的前者表示商，后者表示余数），阶乘，幂，对数，角度制转弧度制，弧度制转角度制，正弦(弧度制)，余弦(弧度制)，正切(弧度制)")
print("使用时直接输入你需要进行的操作，输入中文即可，括号内的不需要输入")
#定义各类计算所需的函数
def sum(a,b):
    return(a+b)
def sub(a,b):
    return(a-b)
def mul(a,b):
    return(a*b)
def div(a,b):
    if b == 0:
        print("除数不能为0！")
    else:
        return(a/b)
def div_exa(a,b):
    if b == 0:
        print("除数不能为0！")
    else:
        return (a // b, a % b)
def fac(a,b):#b是用不到的，只是为了与传入两个参数的函数统一起来，传参更方便。下面一些函数同理。
    return(math.factorial(int(a)))
def pow(a,b):
    return(math.pow(a,b))
def log(a,b):
    return(math.log(b,a))
def deg_rad(a,b):
    return((a/180)*math.pi)
def rad_deg(a,b):
    return((a/math.pi)*180)
def sin(a,b):
    return(math.sin(a))
def cos(a,b):
    return(math.cos(a))
def tan(a,b):
    return (math.tan(a))
def trial(a,b):
    print("此函数正常")
    return 1
def Default(a,b):
    print("抱歉，本计算器尚未开发此功能！")


caldict={
    "加":sum,
    "减":sub,
    "乘":mul,
    "除":div,
    "整除":div_exa,
    "阶乘":fac,
    "幂":pow,
    "对数":log,
    "角度制转弧度制":deg_rad,
    "弧度制转角度制":rad_deg,
    "正弦":sin,
    "余弦":cos,
    "正切":tan,
    "检测":trial
}#利用字典将运算种类与定义的函数一一对应

def getCal(cal):#通过此函数来调用字典中的函数
    fun = caldict.get(cal, Default)
    return fun(a,b)
while key==1:
    cal = input("您要进行的操作是：")
    a = float(input("您要输入的第一个数是："))
    b = float(input("您要输入的第二个数是：（如果您的计算只需要一个数，则这边可以随便输入）"))#这一步是为了将输入一个参数和输入两个参数的函数统一起来。
    print(f"结果为：{getCal(cal)}")

    key=int(input("是否还要继续运算，是请输入1，退出请输入0:"))#控制是否退出
    if key!=1 and key!=0:
        print("错误的输入，但仍然为您退出！")
        key=0
